﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;


namespace Quaack
{
    
    public partial class maakProfiel : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (User.Identity.IsAuthenticated)
            {
                LblProfielAanmakenInfo.Text = ("***U heeft al een profiel. Deze taak wordt geannuleerd.***");
                Response.AddHeader("refresh", "3; URL=Default.aspx");
            }
        }

        protected void ClkAnnuleerMaakProfiel(object sender, EventArgs e)
        {
            LblProfielAanmakenInfo.Text = ("***Aanmaken profiel is door user geannuleerd.***");
            Response.AddHeader("refresh", "3; URL=Default.aspx");
        }

        protected void ClkMaakProfielAan(object sender, EventArgs e)
        {
            /*   connectionstring voor Quaack   */
            SqlConnection SqlProfiel = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=Quaack;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");
            
            /*   Valideer de input, geef foutmelding indien nodig   */
            if (TBGebruikersnaam.Text.Length < 8 | TBGebruikersnaam.Text.Length >16)
            {
                LblProfielAanmakenInfo.Text = ("***De gebruikersnaam moet uit minimaal 8 en maximaal 16 tekens bestaan.***");
                return;
            }

            if (TBWachtwoord.Text.Length < 8 | TBWachtwoord.Text.Length > 16)
            {
                LblProfielAanmakenInfo.Text = ("***Het wachtwoord moet uit minimaal 8 en maximaal 16 tekens bestaan.***");
                return;
            }

            if (TBGebruikersEmailAdres.Text.Length == 0 | TBGebruikersnaam.Text.Length == 0 | TBGebruikersEmailAdres.Text.Length == 0)
            {
                LblProfielAanmakenInfo.Text = ("***gebruikersnaam, wachtwoord en emailadres zijn verplicht.***");
                return;
            }

            LeesData r = new LeesData();
            if (r.FindEmail(TBGebruikersEmailAdres.Text))
            {
                LblProfielAanmakenInfo.Text = ("***Er is een verificatie-email naar uw emailadres verstuurd***");
                return;                
            }

            LeesData u = new LeesData();
            if (u.FindUser(TBGebruikersnaam.Text))
            {
                LblProfielAanmakenInfo.Text = ("***Er is een verificatie-email naar uw emailadres verstuurd***");
                return;
            }

            LeesData m = new LeesData();
            if (TBGebruikersMobielNr.Text != "")
            {
                if (m.FindMobile(TBGebruikersMobielNr.Text))
                {
                    LblProfielAanmakenInfo.Text = ("***Mobiel nummer bestaat al. Kies een ander mobiel nummer***");
                    return;
                }
            }
            
            /*   berekenen tijd voor verificatiemail-antwoord   */
            DateTime now = DateTime.Now;
            TimeSpan time = new TimeSpan(0, 0, 10, 0);
            DateTime endverificationpending = now.Add(time);
            Session.Add("EindeVerificatieTijd", endverificationpending);
            
            /* upload met plaatje   */
            if (FUUploadAvatar.HasFile)
            {
                // Eerst het plaatje met het volledige pad ophalen
                string AvatarWithPath = FUUploadAvatar.PostedFile.FileName;
                // Daarna het pad uit de string verwijderen
                string Avatar = Path.GetFileName(AvatarWithPath);

                /*   opslaan avatar-afbeelding   */
                FUUploadAvatar.SaveAs(Server.MapPath("images/" + Avatar));
                
                {
                    /*   sla profiel op in database   */
                    SqlCommand MaakProfielAan = new SqlCommand("Insert into profile(username, password, profile, avatarlocation, email, mobilenumber, verificationpending, verficationpendingdatetime, tempblocked, permblocked, removed, administrator) values (@username, @password, @profile, @avatarlocation, @email, @mobilenumber, 1, @verificationpendingdatetime, 1, 0, 0, 0)", SqlProfiel);
                    MaakProfielAan.Parameters.AddWithValue("@username", TBGebruikersnaam.Text);
                    MaakProfielAan.Parameters.AddWithValue("@password", TBWachtwoord.Text);
                    MaakProfielAan.Parameters.AddWithValue("@profile", TBProfielschets.Text);
                    MaakProfielAan.Parameters.AddWithValue("@avatarlocation", "images/" + Avatar);
                    MaakProfielAan.Parameters.AddWithValue("@email", TBGebruikersEmailAdres.Text);
                    MaakProfielAan.Parameters.AddWithValue("@mobilenumber", TBGebruikersMobielNr.Text);
                    MaakProfielAan.Parameters.AddWithValue("@verificationpendingdatetime", endverificationpending);
                    
                    /*   open database, sla profiel op en sluit database   */
                    SqlProfiel.Open();
                    MaakProfielAan.ExecuteNonQuery();
                    SqlProfiel.Close();

                    /*   Mailprocedure activatie: stuur mail met activatielink   */
                    int profielID = 0;
                    string mailadres = TBGebruikersEmailAdres.Text;
                    SqlCommand BepaalId = new SqlCommand("Select profileid from profile where email = '" + mailadres + "'", SqlProfiel);
                    SqlProfiel.Open();
                    object sqlObject = BepaalId.ExecuteScalar();
                    SqlProfiel.Close();
                    profielID = Convert.ToInt32(sqlObject.ToString());
                    string emailAddress = TBGebruikersEmailAdres.Text;
                    string id = Convert.ToString(profielID);
                    string title = "Activeer je profiel";
                    string body = "Klik op de volgende link: http://www.quaack.nl/bevestigen.aspx?id=" + id + "&email=leeg";
                    Email ActiveerProfiel = new Email();
                    ActiveerProfiel.SendMail(emailAddress, title, body);

                    /*   clear inputvelden   */
                    if (IsPostBack)
                    {
                        TBGebruikersnaam.Text = "";
                        TBWachtwoord.Text = "";
                        TBProfielschets.Text = "";
                        FUUploadAvatar = null;
                        TBGebruikersEmailAdres.Text = "";
                        TBGebruikersMobielNr.Text = "";
                    }
                    LblProfielAanmakenInfo.Text = ("***Er is een verificatie-email naar uw emailadres verstuurd***");
                    Response.AddHeader("refresh", "3; URL=Default.aspx");
                }
            }
            
            /*   upload zonder plaatje   */
            else
            {
                /*   sla profiel op in database   */
                SqlCommand MaakProfielAan = new SqlCommand("Insert into profile(username, password, profile, email, mobilenumber, verificationpending, verficationpendingdatetime, tempblocked, permblocked, removed, administrator) values (@username, @password, @profile, @email, @mobilenumber, 1, @verificationpendingdatetime, 1, 0, 0, 0)", SqlProfiel);
                MaakProfielAan.Parameters.AddWithValue("@username", TBGebruikersnaam.Text);
                MaakProfielAan.Parameters.AddWithValue("@password", TBWachtwoord.Text);
                MaakProfielAan.Parameters.AddWithValue("@profile", TBProfielschets.Text);
                MaakProfielAan.Parameters.AddWithValue("@email", TBGebruikersEmailAdres.Text);
                MaakProfielAan.Parameters.AddWithValue("@mobilenumber", TBGebruikersMobielNr.Text);
                MaakProfielAan.Parameters.AddWithValue("@verificationpendingdatetime", endverificationpending);

                /*   open database, voer maakprofielaan uit en sluit database   */
                SqlProfiel.Open();
                MaakProfielAan.ExecuteNonQuery();
                SqlProfiel.Close();

                /*   Mailprocedure activatie: stuur mail met activatielink   */
                int profielID = 0;
                string mailadres = TBGebruikersEmailAdres.Text;
                SqlCommand BepaalId = new SqlCommand("Select profileid from profile where email = '" + mailadres + "'", SqlProfiel);
                SqlProfiel.Open();
                object sqlObject = BepaalId.ExecuteScalar();
                SqlProfiel.Close();
                profielID = Convert.ToInt32(sqlObject.ToString());                   
                string emailAddress = TBGebruikersEmailAdres.Text;
                string id = Convert.ToString(profielID);
                string title = "Activeer je profiel";
                string body = "Klik op de volgende link: http://www.quaack.nl/bevestigen.aspx?id=" + id + "&email=leeg";
                Email ActiveerProfiel = new Email();
                ActiveerProfiel.SendMail(emailAddress, title, body);
                LblProfielAanmakenInfo.Text = ("***Er is een verificatie-email naar uw emailadres verstuurd***");
                Response.AddHeader("refresh", "3; URL=Default.aspx");
            }
        }
    }
}
